Los Sistemas de Gestión de Bases de Datos (SGBD) permiten almacenar gran cantidad de datos y realizar las operaciones de manera eficiente. El conjunto de datos que se introduce en un SGBD se conoce como base de datos.
Para trabajar con un SGBD diferenciamos dos lenguajes:
Lenguaje de definición de datos (LDD): Este lenguaje permite que se creen las estructuras de la base de datos para que funcione correctamente.
Lenguaje de manipulación de datos (LMD): La manipulación de datos se entiende como la recuperación, inserción, modificación y eliminación de los datos almacenamos en la base de datos.
Se trata de representar los datos de una manera jerárquica. De esta forma, un archivo del sistema se convierte en un tipo de registro que se interconecta mediante punteros. La función de los punteros es la de indicar la ubicación física del registro en cuestión.
La característica de este esquema es la relación uno-varios, en la que un elemento tiene únicamente un padre. Se puede observar que no todas situaciones se pueden modelar utilizando este esquema de bases de datos.

Son muy utilizadas en aplicaciones que requieren un muy alto rendimiento y disponibilidad como banca y telecomunicaciones.
Las mas utilizadas es IMS (Information Management System) de IBM.
Un ejemplo claro y accesible de una base de datos jerárquica seria el registro de Windows:

El modelo en red surge para mejorar el modelo jerárquico. Los registros son archivos que se unen mediante relaciones uno-varios, tomando el nombre de conjuntos. Estos archivos son enlazados mediante punteros, eliminando identificadores de la parte secundaria de la relación para garantizar la consistencia. A diferencia del modelo jerárquico, en este se da nombre a las relaciones para permitir a los usuarios referirse a ellas y hacer partícipes a los elementos secundarios en varias relaciones.

Una base de datos relacional es un conjunto de tablas, cada una de ellas con un nombre único en la BD.
Cada tabla es un conjunto de entidades compuestas por:
Columnas: son los atributos que definen a los elementos del conjunto de la tabla.
Filas: son nuestros elementos.
Otros conceptos que nos permiten definir características de nuestros datos son:
Dominio: son el conjunto de valores que admite cada atributo. Ejemplo: cadenas de caracteres, números decimales...
Tupla o fila: Son cada uno de los elementos que tenemos en nuestra tabla.

En resumen, la estructura básica de las tablas está determinada por un conjunto de atributos, donde sus dominios determinan los valores que podrían tomar estos atributos.
Cada tupla o fila de una tabla representa un caso particular de la misma relación, por lo tanto, la tabla puede considerarse un conjunto de estas tuplas o filas. De esta forma, cada tupla sólo puede estar una vez en la tabla.

Con la evolución de los lenguajes de programación y el nacimiento de la programación orientada a objetos, surge la necesidad de almacenar datos complejos. Sin embargo, los sistemas de bases de datos relacionales fueron creados para el almacenamiento de información atómica. Por ello, surge la necesidad de crear nuevos sistemas que se adapten a los nuevos tipos de datos.
Este tipo de base de datos también son conocidas como bases de datos NoSQL (No Only SQL), para hacer referencia a su aspecto principal, y es que no utilizan SQL como lenguaje principal de consultas. Dentro de este término podemos encontrar los siguientes tipos de bases de datos:
Orientadas a objetos: se basan en el modelo de orientación a objetos. Un ejemplo de este tipo de base de datos es ObjectDB.
Documentales: Se almacena la información en lo que se denomina “documento”. Los documentos son similares, de algún modo, a registros, tuplas o filas en una base de datos relacional, pero menos rígidos. No se les requiere ajustarse a un esquema estándar ni tener todos las mismas secciones, atributos o claves. Ejemplos de este tipo de bases de datos son CouchDB o MongoDB entre otros.
Orientadas a grafos: Representan la información como nodos de un grafo y las relaciones son las aristas. De manera que se pueda usar teoría de grafos para recorrer la base de datos. Ejemplos de este tipo de base de datos son, Neo4j u OrientDB.
Clave-Valor: Almacenan datos como conjuntos de pares clave-valor en los que una clave sirve como un identificador único. Tanto las claves como los valores pueden ser cualquier cosa, desde objetos simples hasta objetos compuestos complejos. Las bases de datos clave-valor son altamente divisibles y permiten el escalado horizontal a escalas que otros tipos de bases de datos no pueden alcanzar. Ejemplos de este tipo de base de datos tenemos Amazon DynamoDB o Apache Cassandra.